// Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

import { ScheduleTask } from '../type'
import { LLMOption } from './base'
import { OpenAILLM } from './openai'

/**
 * Visit https://bailian.console.aliyun.com/#/model-market to get more models.
 */
export class Aliyun extends OpenAILLM {
  provider = 'aliyun'

  option: LLMOption = {
    contextLength: 1_000_000,
    maxTokens: 100 * 1024,
    apiBase: 'https://dashscope.aliyuncs.com/compatible-mode/v1/',
  }

  public checkLimit: (_: { runningTask: ScheduleTask[] }) => boolean = ({ runningTask }) => {
    return runningTask.length < 10
  }
}
